package com.cskaoyan.javase.oop.anonymous8;

/**
 * @description: 匿名对象
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 匿名：没有名字，佚名
 * 匿名对象，就是没有名字的对象，名字就是对象的引用
 *      所以实质上匿名对象就是没有引用指向它的对象
 *
 * 匿名对象有啥用？
 *  1，如果我只想调用该对象的成员方法，一次，可以使用匿名对象
 *  优点是：不罗嗦，代码形式简单。
 *   没有引用的对象是垃圾，这种形式调用方法，该对象很快会被回收
 *   及时回收垃圾，提升内存利用率
 *  缺点：只能调用一次，再想使用该对象就找不到它了，因为没有引用
 *  适用场景就是：想搞一次调用，然后又懒又想省事
 *  如果必须要多次调用，匿名对象就是给自己找麻烦
 *
 *  2，可以作为方法的传参，使用次数最多，以后天天用
 *  好处：省事，提升内存利用率
 *  缺点:只能用一次，多了不行
 *
 * 只适用于想传一次参数的时候，如果有多次传入的需求，这种方法就不适用了
 *
 */
public class Demo {
    public static void main(String[] args) {
        /*Animal a = new Animal();
        a.test();*/
        //上述步骤二合一
        //new Animal().test();

        //按照常规思路调用test方法
        /*Animal a = new Animal();
        test(a);*/
        //上述步骤二合一
        test(new Animal());
    }

    public static void test(Animal a) {
        a.test();
    }
}

class Animal {
    public void test() {
        System.out.println("普通成员方法");
    }
}

